/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Domain;

import Domain.Player.Disc;
import java.util.Iterator;

/**
 *
 * @author sa11
 */

/**
 * The interface for the set of rules to be used in e.g. GameGrid.
 *
 * It allows you to check whether something is a validMove, who the winner is,
 * if someone has won, if a certain disc is part of a winning row and whether it
 * is a tie or not.
 */
public interface GameRules {

        /** Get the DiscID of the winner. */
        public abstract Disc getWinner();
       
        /** Returns an Interator containing all the points included in the winnin row/-s */
        public abstract Iterator getWinnerPoints();

        /** Returns true if anybody has won. */
        public abstract boolean hasWon();

        /** Returns true if the disc placed at the xth row and yth column
         * is part of a winning move.
         */
        public abstract boolean hasWon(int x, int y);

        /** Returns true if a disc placed in column is a valid move. */
        public abstract boolean isValidMove(int column, int row);

        /** Returns true if there is a tie. */
        //BEHÖVS VÄLL INTE?
        public abstract boolean isTie();

}

